A virtual machine is a software representation of a physical machine upon which programs execute. A virtual machine presents to a program, such as a guest operating system (OS), software representation of physical resources, which may include virtualized versions of one or more central processing units (CPUs), system memory, and peripheral devices. Attempts by the guest OS to access these virtual resources, such as the virtualized system memory, are typically received by the virtual machine and executed on the virtualized CPU of the virtual machine.
Most, or all, of the virtual machines operate with a limited number of virtual CPUs. The limited number of virtual CPUs can constrain the guest OS operations, which may include processor intensive operations such as transferring data from one memory location to another memory. In addition, virtual machines are typically partitioned with limited capability to share their virtual resources across the partitions. Thus, operations that are offloaded from one virtual machine to another virtual machine are often offloaded inefficiently because the operation offloads may require high CPU usage of the one virtual machine or may require copying data between the virtual machine memories.